package org.ragdollcat.first.service;

import org.ragdollcat.first.model.dto.analyze.*;
import org.ragdollcat.first.model.entity.Space;
import org.ragdollcat.first.model.vo.*;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 统计分析
 */
public interface AnalyzeService {


    /**
     * 空间使用情况分析
     *
     * @param request
     * @param httpServletRequest
     * @return
     */
    SpaceUsageAnalyzeResponse spaceUsageAnalyze(SpaceUsageAnalyzeRequest request, HttpServletRequest httpServletRequest);

    /**
     * 空间图片分类分析
     *
     * @param spaceCategoryAnalyzeRequest
     * @param httpServletRequest
     * @return
     */
    List<SpaceCategoryAnalyzeResponse> spaceCategoryAnalyze(SpaceCategoryAnalyzeRequest spaceCategoryAnalyzeRequest, HttpServletRequest httpServletRequest);


    /**
     * 空间标签分类使用分析
     *
     * @param spaceTagAnalyzeRequest
     * @param httpServletRequest
     * @return
     */
    List<SpaceTagAnalyzeResponse> spaceTagAnalyze(SpaceTagAnalyzeRequest spaceTagAnalyzeRequest, HttpServletRequest httpServletRequest);

    /**
     * 空间图片大小分析
     *
     * @param spaceSizeAnalyzeRequest
     * @param httpServletRequest
     * @return
     */
    List<SpaceSizeAnalyzeResponse> spaceSizeAnalyze(SpaceSizeAnalyzeRequest spaceSizeAnalyzeRequest, HttpServletRequest httpServletRequest);

    /**
     * 用户上传行为分析
     *
     * @param spaceUserAnalyzeRequest
     * @param httpServletRequest
     * @return
     */
    List<SpaceUserAnalyzeResponse> spaceUserAnalyze(SpaceUserAnalyzeRequest spaceUserAnalyzeRequest, HttpServletRequest httpServletRequest);

    /**
     * 管理员统计占用存储最多的N个空间
     * 只有管理员才能查看
     *
     * @param spaceRankAnalyzeRequest
     * @param httpServletRequest
     * @return
     */
    List<Space> spaceRankAnalyze(SpaceRankAnalyzeRequest spaceRankAnalyzeRequest, HttpServletRequest httpServletRequest);
}
